
package com.jf.cloud.service.sysmanager.remote;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.jf.cloud.service.sysmanager.common.base.AjaxPageData;
import com.jf.cloud.service.sysmanager.common.base.OPaging;
import com.jf.cloud.service.sysmanager.common.db.Query;
import com.jf.cloud.service.sysmanager.common.taglib.Paging;
import com.jf.cloud.service.sysmanager.common.util.DateUtil;
import com.jf.cloud.service.sysmanager.dao.IPubgBaseTypeService;
import com.jf.cloud.service.sysmanager.entity.PubgBaseType;
import com.jf.cloud.service.sysmanager.handler.TokenHandler;
import com.jf.cloud.service.sysmanager.support.web.BaseController;

import net.sf.json.JSONObject;

/**
 * 员工控制器
 * 
 * @author 代码机1.0 创建时间：2018-03-31
 */
@Controller
@RequestMapping("/baseType")
public class PubgBaseTypeController extends BaseController {

	/**
	 * 日志
	 */
	private static Log log = LogFactory.getLog(PubgBaseTypeController.class);

	/**
	 * 员工服务
	 */
	@Resource
	private IPubgBaseTypeService pubgBaseTypeService;

    @Autowired
    private TokenHandler tokenHandler;

	/**
	 * 获取指定类型列表数据
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午7:59:10
	 */
	@ResponseBody
	@RequestMapping("/data.json")
	public AjaxPageData<PubgBaseType> getDataList(HttpServletRequest request, OPaging<PubgBaseType> xPage){
		AjaxPageData<PubgBaseType> pageData = new AjaxPageData<PubgBaseType>();
		try {
			String token = request.getParameter("token");
			String sysStaffJson = tokenHandler.getCommUserInfoByToken(token);
			if (sysStaffJson == null || sysStaffJson.trim().length() == 0) {
				return pageData;
			}
			
			Paging<PubgBaseType> page = this.pubgBaseTypeService.findPage(xPage);
			pageData.setRows(page.getDataList());
			pageData.setTotal(page.getTotalRows());
		} catch (Exception e) {
			log.error("获取指定类型列表数据出错了" , e);
		}
		return pageData;
	}
	
	/**
	 * 添加修改页面获取指定类型信息
	 * 
	 * @author 朱建文 创建时间：2017年12月8日 下午4:5:02
	 */
	@ResponseBody
	@RequestMapping("/getInfo")
	public PubgBaseType getBaseFoucsMapInfo(Long rowId, HttpServletRequest request){
		PubgBaseType baseFoucsMapType = new PubgBaseType();
		try {
			// 修改指定类型信息时
			if (rowId != null && rowId.longValue() > 0) {
				baseFoucsMapType = this.pubgBaseTypeService.findByPK(rowId);
			} else {
				
				baseFoucsMapType.setOpenFlag(1);
			}
		} catch (Exception e) {
			log.error("添加修改页面获取指定类型信息出错！", e);
		}
		return baseFoucsMapType;
	}
	
	/**
	 * 添加指定类型
	 * 
	 * @author 朱建文 创建时间：2017年12月9日 上午11:01:04
	 */
	@ResponseBody
	@RequestMapping("/save")
	public String addBaseFoucsMap(HttpServletRequest request, HttpServletResponse response, PubgBaseType baseType){
		try{
			String token = request.getParameter("token");
			String sysStaffJson = tokenHandler.getCommUserInfoByToken(token);
			if (sysStaffJson == null || sysStaffJson.trim().length() == 0) {
				return "index";
			}
			if ("1".equals(request.getParameter("isReCommit"))) {
				return "请勿重复提交！";
			}
			
			if (Long.valueOf(0).equals(baseType.getRowId())) {
				baseType.setRowId(null);
			}
			
			JSONObject sysStaff = JSONObject.fromObject(sysStaffJson);
			baseType.setDelFlag(0);
			baseType.setCreateId(sysStaff.getLong("rowId"));
			baseType.setCreateAccount(sysStaff.getString("staffAccount"));
			baseType.setCreateTime(DateUtil.getCurrentDateTime());
			baseType.setOptId(sysStaff.getLong("rowId"));
			baseType.setOptAccount(sysStaff.getString("staffAccount"));
			baseType.setOptTime(DateUtil.getCurrentDateTime());
			pubgBaseTypeService.saveObj(baseType);
		} catch (Exception e) {
			log.error("添加指定类型出错了", e);
			return "-1";
		}
		return "0";
	}
	
	/**
	 * 修改指定类型
	 * 
	 * @author 朱建文 创建时间：2017年12月11日 上午10:30:47
	 */
	@ResponseBody
	@RequestMapping("/update")
	public String updateBaseFoucsMap(HttpServletRequest request, HttpServletResponse response, PubgBaseType baseType) {
		try{
			String token = request.getParameter("token");
			String sysStaffJson = tokenHandler.getCommUserInfoByToken(token);
			if (sysStaffJson == null || sysStaffJson.trim().length() == 0) {
				return "index";
			}
			if ("1".equals(request.getParameter("isReCommit"))) {
				return "请勿重复提交！";
			}
			
			JSONObject sysStaff = JSONObject.fromObject(sysStaffJson);
			baseType.setOptId(sysStaff.getLong("rowId"));
			baseType.setOptAccount(sysStaff.getString("staffAccount"));
			baseType.setOptTime(DateUtil.getCurrentDateTime());
			pubgBaseTypeService.saveObj(baseType);
		} catch (Exception e) {
			log.error("修改指定类型出错了", e);
			return "修改指定类型出错了!";
		}
		return "1";
	}

	/**
	 * 修改指定类型启用状态
	 * 
	 * @author 朱建文 创建时间：2017年12月9日 下午7:58:31
	 */
	@ResponseBody
	@RequestMapping("/updateUseState")
	public String updateUseState(HttpServletRequest request, Long rowId, Integer useFlag) {
		String result = "index";
		try {
			if (rowId == null || useFlag == null) {
				return "2";
			}
			
			// 验证登录状态
			String token = request.getParameter("token");
			String sysStaffJson = tokenHandler.getCommUserInfoByToken(token);
			if (sysStaffJson == null || sysStaffJson.trim().length() == 0) {
				return result;
			}
			JSONObject sysStaff = JSONObject.fromObject(sysStaffJson);
			
			// 默认更新失败
			result = "2";
			PubgBaseType baseFoucsMapType = this.pubgBaseTypeService.findByPK(rowId);
			baseFoucsMapType.setOpenFlag(useFlag);
			baseFoucsMapType.setOptId(sysStaff.getLong("rowId"));
			baseFoucsMapType.setOptAccount(sysStaff.getString("staffAccount"));
			baseFoucsMapType.setOptTime(DateUtil.getCurrentDateTime());
			this.pubgBaseTypeService.saveObj(baseFoucsMapType);
			result = "1";
			
		} catch (Exception e) {
			log.error("修改指定类型启用状态出错了", e);
		}
		return result;
	}
	
	/**
	 * 删除指定类型（更新标记）
	 * 
	 * @author 朱建文 创建时间：2017年12月9日 下午7:51:19
	 */
	@ResponseBody
	@RequestMapping("/delete")
	public String deleteBaseFoucsMap(HttpServletRequest request, Long rowId, Integer openFlag) {
		String result = "index";
		try {
			
			// 验证登录状态
			String token = request.getParameter("token");
			String sysStaffJson = tokenHandler.getCommUserInfoByToken(token);
			if (sysStaffJson == null || sysStaffJson.trim().length() == 0) {
				return result;
			}
			JSONObject sysStaff = JSONObject.fromObject(sysStaffJson);
			
			if (openFlag == 1) {
				return "3";
			}
			
			// 默认更新失败
			result = "2";
			PubgBaseType baseFoucsMapType = this.pubgBaseTypeService.findByPK(rowId);
			baseFoucsMapType.setDelFlag(1);
			baseFoucsMapType.setOptId(sysStaff.getLong("rowId"));
			baseFoucsMapType.setOptAccount(sysStaff.getString("staffAccount"));
			baseFoucsMapType.setOptTime(DateUtil.getCurrentDateTime());
			this.pubgBaseTypeService.saveOrUpdatePubgBaseType(baseFoucsMapType);
			result = "1";
			
		} catch (Exception e) {
			log.error("删除指定类型出错了", e);
		}
		return result;
	}
	
	/**
	 * 检查指定类型是否存在
	 * 
	 * @author 朱建文 创建时间：2017年12月8日 下午6:50:38
	 */
	@ResponseBody
	@RequestMapping("/checkIsExist")
	public boolean checkIsExist(PubgBaseType baseType, HttpServletRequest request){
		boolean boo = false;
		try{
//			boo = this.pubgBaseTypeService.checkIsExist(baseType);
		} catch (Exception e) {
			log.error("检查指定类型是否存在出错了", e);
		}
		return boo;
	}

	/**
	 * 获取指定类型的下拉框
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午7:55:20
	 */
	@ResponseBody
	@RequestMapping("/bigSelect")
	public List<Map<String,Object>> bigSelect(HttpServletRequest request, OPaging<PubgBaseType> xPage){
		List<Map<String,Object>> dataList = new ArrayList<Map<String,Object>>();
		try {
			String token = request.getParameter("token");
			String sysStaffJson = tokenHandler.getCommUserInfoByToken(token);
			if (sysStaffJson == null || sysStaffJson.trim().length() == 0) {
				return dataList;
			}
			
			// 筛选条件
			Query query = new Query();
			Iterator<Entry<String, Object>> iterator = xPage.getWm().entrySet().iterator();
			Entry<String, Object> entry = null;
			while (iterator.hasNext()) {
				entry = iterator.next();
				query.put(entry.getKey(), entry.getValue());
			}
			query.groupBy("TYPE_FLAG");
			dataList = this.pubgBaseTypeService.selectDataMaps("TYPE_FLAG", "TYPE_BIG_NAME", query);
		} catch (Exception e) {
			log.error("获取指定类型的下拉框出错！", e);
		}
		return dataList;
	}

	/**
	 * 获取指定类型的下拉框
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午7:55:20
	 */
	@ResponseBody
	@RequestMapping("/select")
	public List<Map<String,Object>> roleDict(HttpServletRequest request, OPaging<PubgBaseType> xPage, HttpServletResponse response){
		response.setHeader("Access-Control-Allow-Origin", "*");
		List<Map<String,Object>> dataList = new ArrayList<Map<String,Object>>();
		try {
			String token = request.getParameter("token");
			String sysStaffJson = tokenHandler.getCommUserInfoByToken(token);
			if (sysStaffJson == null || sysStaffJson.trim().length() == 0) {
				return dataList;
			}
			
			// 筛选条件
			Query query = new Query();
			Iterator<Entry<String, Object>> iterator = xPage.getWm().entrySet().iterator();
			Entry<String, Object> entry = null;
			while (iterator.hasNext()) {
				entry = iterator.next();
				query.put(entry.getKey(), entry.getValue());
			}
			query.put("_NOT_NULL$TYPE_NAME", "_NOT_NULL$TYPE_NAME");
			
			dataList = this.pubgBaseTypeService.selectDataMaps("ROW_ID", "TYPE_NAME", query);
		} catch (Exception e) {
			log.error("获取指定类型的下拉框出错！", e);
		}
		return dataList;
	}


}
